import 'package:enjoy_plus_ohos/utils/eventbus.dart';
import 'package:enjoy_plus_ohos/utils/token.dart';
import 'package:flutter/material.dart';
import 'package:enjoy_plus_ohos/utils/http.dart';

class MinePage extends StatefulWidget {
  const MinePage({super.key, required this.currentIndex});

  final int currentIndex;

  @override
  State<MinePage> createState() => _MinePageState();
}

class _MinePageState extends State<MinePage> {
  // 用户信息
  Map<String, dynamic> _userInfo = {
    'id': null,
    'avatar': null,
    'nickName': null,
  };

  @override
  void initState() {
    super.initState();
    // 监听刷新我的页面事件
    eventBus.on<RefreshMine>().listen((event) {
      _getUserInfo();
    });
  }

  @override
  void didUpdateWidget(covariant MinePage oldWidget) {
    super.didUpdateWidget(oldWidget);
    // 如果当前页面是我的页面，则需请求更新用户信息
    if (widget.currentIndex == 1) {
      _getUserInfo();
    }
  }

  // 获取用户信息
  Future<void> _getUserInfo() async {
    // 如果 token 为空，则不请求用户信息
    if (TokenManager().getToken() == null) return;
    // 请求用户信息
    final res = await http.get('/userInfo');
    if (res['code'] == 10000) {
      setState(() {
        _userInfo = res['data'];
      });
    }
  }

  // 菜单数据
  final List menuList = [
    {
      "title": "我的房屋",
      "icon": "assets/images/house_profile_icon@2x.png",
    },
    {
      "title": "我的报修",
      "icon": "assets/images/repair_profile_icon@2x.png",
    },
    {
      "title": "访客记录",
      "icon": "assets/images/visitor_profile_icon@2x.png",
    }
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: const Color.fromARGB(200, 85, 145, 175),
      appBar: AppBar(
        title: const Text(
          '我的',
          style: TextStyle(color: Colors.white),
        ),
        backgroundColor: Colors.transparent,
        shadowColor: Colors.transparent,
        centerTitle: true,
      ),
      body: ListView(
        children: [
          // 个人信息
          Container(
            padding: const EdgeInsets.all(10),
            child: GestureDetector(
              onTap: () {
                // Navigator.pushNamed(context, '/profile');
              },
              child: Row(
                children: [
                  ClipRRect(
                    borderRadius: BorderRadius.circular(50.0),
                    child: _userInfo['avatar'] != null
                        ? Image.network(
                            _userInfo['avatar'],
                            width: 50,
                            height: 50,
                          )
                        : Image.asset(
                            'assets/images/avatar_1.jpg',
                            width: 50,
                            height: 50,
                          ),
                  ),
                  const SizedBox(width: 10),
                  Text(_userInfo['nickName'] ?? '未登录用户',
                      style:
                          const TextStyle(fontSize: 16, color: Colors.white)),
                  const Spacer(),
                  const Text(
                    '去完善信息',
                    style: TextStyle(color: Colors.white),
                  ),
                  const Icon(
                    Icons.arrow_forward_ios,
                    color: Colors.white,
                    size: 13,
                  )
                ],
              ),
            ),
          ),
          Container(
            padding: const EdgeInsets.all(15),
            margin:
                const EdgeInsets.only(top: 20, left: 10, right: 10, bottom: 20),
            decoration: BoxDecoration(
              color: Colors.white,
              borderRadius: BorderRadius.circular(10),
            ),
            child: Column(
              children: menuList.map(
                (item) {
                  return SizedBox(
                    height: 50,
                    child: Row(
                      children: [
                        Row(
                          children: [
                            Image.asset(
                              item['icon'],
                              width: 20,
                              height: 20,
                            ),
                            const SizedBox(
                              width: 10,
                            ),
                            Text(
                              item['title'],
                              style: const TextStyle(fontSize: 16),
                            )
                          ],
                        ),
                        const Spacer(),
                        const Icon(
                          Icons.arrow_forward_ios,
                          size: 12,
                          color: Colors.grey,
                        )
                      ],
                    ),
                  );
                },
              ).toList(),
            ),
          )
        ],
      ),
    );
  }
}
